#ifndef PUCK_H
#define PUCK_H

#include "circle3d.h"
#include "cylinder3d.h"
#include "object_builder.h"
#include "geometry/single_color_object.h"

class Puck : public SingleColorObject {
    public:
        Puck(float radius, float height, int numPoints);
        virtual ~Puck() {
            delete m_topCircle;
            delete m_cylinder;
        };

        inline size_t getVertexPointSize() override {
            return getTopCirclePointSize() + getCylinderPointSize();
        };
        inline int getNumPoints() {
            return m_numPoints;
        };
        inline int getHeight() {
            return m_height;
        };
        inline int getTopCirclePointSize() {
            return circleVertexSize(m_numPoints);
        };
        inline int getCylinderPointSize() {
            return openCylinderVertexSize(m_numPoints);
        };

    private:
        float m_radius, m_height;
        int m_numPoints;
        Cylinder3D *m_cylinder = nullptr;
        Circle3D *m_topCircle = nullptr;
};

#endif // PUCK_H
